import imgaug as ia
import imgaug.augmenters as iaa
from imgaug.augmentables.bbs import BoundingBox, BoundingBoxesOnImage
import cv2
import utils
import xml.etree.ElementTree as ET
import os
from tqdm import tqdm
from importlib import reload
reload(utils)
IMAGE = 'TrainData/images/strawimage1.jpg'
ANNOTATION = 'TrainData/annotations/strawimage1.xml'
The image is actually pretty high resolution so it may take a second to plot.
utils.show_annotated_image(image_path=IMAGE, annotation_path=ANNOTATION, ripe_color=utils.BLUE, unripe_color=utils.GREEN)
Augmentations are applied randomly. Rerun the below two cells to see the differences. I'm a little too lazy to implement plotting several results on a grid, but maybe I'll come back to that if I have time later and it helps for the presentation.
img = utils.read_image(IMAGE)
img_boxes = BoundingBoxesOnImage(utils.get_bounding_boxes(ANNOTATION), shape=img.shape)
img_aug, img_boxes_aug = utils.augment(img, img_boxes)
utils.show_annotated_image(image=img_aug, boxes=img_boxes_aug)
img_aug, img_boxes_aug = utils.fancy_augment(img, img_boxes)
utils.show_annotated_image(image=img_aug, boxes=img_boxes_aug)
TRAIN_PATH = 'TrainData/images/'
TRAIN_AUGMENTED_PATH = 'TrainData/images_augmented/'
ANNOTATIONS_PATH = 'TrainData/annotations/'
ANNOTATIONS_AUGMENTED_PATH = 'TrainData/annotations_augmented/'
TEST_PATH = 'TestData/images/'
out = []
for f in tqdm(os.listdir(TRAIN_PATH)):
if f[-4:] != '.jpg':
continue
img = utils.read_image(TRAIN_PATH + f)
img_boxes = BoundingBoxesOnImage(
utils.get_bounding_boxes(ANNOTATIONS_PATH + f[:-4] + '.xml'),
shape=img.shape
)
img_aug, img_boxes_aug = utils.augment(img, img_boxes)
utils.write_image(TRAIN_AUGMENTED_PATH + f, img_aug)
out += utils.get_training_annotations(TRAIN_AUGMENTED_PATH + f, img_boxes_aug)
utils.write_annotation_xml('images_augmented', ANNOTATIONS_AUGMENTED_PATH, f, img_aug, img_boxes_aug)
with open('annotate_augmented.txt', 'w') as f:
f.write('\n'.join(out))
utils.show_annotated_image(image_path='TrainData/images_augmented/strawimage1.jpg', annotation_path='TrainData/annotations_augmented/strawimage1.xml')